# !/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
@作者 杨阳
@时间 2018-07-20
@说明 处理微信聊天相关的请求
@注意事项
"""
import json

import itchat
from flask import Blueprint
from flask_login import current_user

from model.WebSiteModel import TChatUserModel
from util import ChatUtil, LogUtil

chat = Blueprint('chat', __name__, url_prefix='/chat')


@chat.route("/get/qrcode/", methods=["GET"])
def get_qrcode():
    """
    获取微信登录二维码
    :return:
    """
    uuid = ChatUtil.chat_get_qr_pic()
    result = {"success": True, "pic": uuid}
    return json.dumps(result)


@chat.route("/chatlogged/", methods=["GET"])
def already_logged():
    """
    判断用户是否已经登录，如果登录了直接返回真
    如果没有登录那么生成二维码后返回给用户
    :return:
    """
    # 在这里先调用auto_login登录一下，他会去static/CHAT/current_user.id___itchat.pkl，如果已经登录过，就不需要再登录了

    chat = TChatUserModel.get_chat_by_userid(current_user.id)
    if not chat:
        # 在表中没有找到记录，那么应该揷入
        chat = TChatUserModel.add_char(current_user.id, ChatUtil.chat_get_qruuid())

    is_logged = ChatUtil.chat_already_logged(chat.qr_uuid)
    LogUtil.info("用户状态状态码：{}".format(is_logged))

    if is_logged == '408' or is_logged == '400':
        # 验证码超时，要生新生成
        # 这时也要更新表中的二维码，因为说明原来的已经没有用了
        chat = TChatUserModel.update_chat(current_user.id, ChatUtil.chat_get_qruuid())
        ChatUtil.chat_get_qr_pic(chat.qr_uuid)
        result = {"success": is_logged, "pic": chat.qr_uuid}
        LogUtil.info("用户没有登录，生成二维码：{}".format(chat.qr_uuid))
    if is_logged == '200':
        # 用户已经登录
        result = {"success": is_logged, "pic": ""}
        userInfo = itchat.web_init()
        itchat.show_mobile_login()
        itchat.get_friends(True)
        LogUtil.info("登录用户：{}".format(userInfo))

        itchat.send("我来了", 'filehelper')
    else:
        pass
    return json.dumps(result)


@itchat.msg_register
def simple_reply(msg):
    if msg['Type'] == 'Text':
        return 'I received: %s' % msg['Content']
